The present invention relates to software applications/programs running on client computers in a computer network. More specifically, it relates to a system and method for ‘configuration management and enforcement’ of such software application/programs.
Nowadays, Enterprise Corporate Networks have become the backbone of business organizations. An Enterprise Corporate Network is a computer network that enables the users in the organization to communicate, exchange information and share network resources within the organization and also with other organizations. A typical enterprise network, in general, is based on client-server architecture, where one or more server computers serve requests from a large number of client computers. The client computers run a set of software applications that enable a client computer to communicate with a server (such as FTP, WWW, e-mail), as well as to run standalone programs (such as word processing programs, anti-virus program, multimedia player programs etc.). Nowadays client computers have the ability to simultaneously run multiple sophisticated software applications at a given point of time. These software applications can either run in foreground (for example word processing, e-mail program etc.), or can run in background (such as anti-virus programs, scheduling agent program).
During the past few decades, Enterprise Corporate Networks have grown tremendously in terms of complexity, size and number of users. Current enterprise networks can seamlessly interconnect thousands of computing devices within the organization. The software applications have also experienced a similar growth. Within short intervals of time, many new software applications are being introduced in the market with a new set of features and advancements over their previous versions. The Internet has also significantly accelerated the release schedule of such software applications. New releases, updates and bug-fixtures of software applications are available on the websites of software vendors, which can be downloaded and installed by the users.
The significant growth of enterprise networks and software applications has also presented some problems and issues for the system administrators of the enterprise network. One of the major issues is to ensure that such software applications run in the correct manner. Consider the example of an anti-virus program installed on a client machine in an enterprise network. Here correct operation means that the anti-virus program always runs on the client machine, and the program has the latest virus definition files in order to provide protection from the latest viruses. However, if the user disables the anti-virus program, or if the anti-virus program is not updated with latest virus-definition files, the desired benefits from the anti-virus program may not be available. This may result in considerable loss to an organization in case of a virus attack. Thus, it becomes imperative for an organization to ensure correct operation of software applications on all the computers.
Another major issue is to maintain consistency and uniformity in the network in terms of various configurations and settings of software applications running on computers in the network. For example, inconsistencies in software versions and settings may result in inadvertent formatting errors in shared documents and files. This can lead to reduced efficiency, and loss of time and money for the organization as a whole.
Various approaches exist in the art to address the above issues. In some organizations, it is the responsibility of a system administrator to keep all software applications updated, and to ensure that they work with the correct settings. In such organizations, the system administrator visits each client computer and updates each computer with new settings/patches of all software applications that need an update. This approach, however, becomes laborious and time consuming when there are a large number of computers in a network. It is difficult for a system administrator to frequently and regularly update all the computers. Further, it is an arduous task to monitor whether all the software applications are running correctly.
There also exist patents that try to address above-mentioned issues, and some of them are discussed below.
U.S. Pat. No. 5,732,275, entitled “Method And Apparatus For Managing And Automatically Updating Software Programs”, assigned to Apple Computer, Inc., Cupertino, Calif., USA, is aimed at automatically managing, monitoring and updating a software application with a newer version in a completely automated fashion. The patent discloses use of a control module that locates and identifies other versions of an application. The control module then selects a software version on the basis of specified criteria and runs the selected version of the software application. The invention disclosed in the patent allows multiple versions of an application to remain accessible on the computer. The control module manages the launching of a particular version that may be required. Statistical data relating to the launching and operation of the application is collected, and uploaded to a central location on a regular basis.
U.S. Pat. No. 5,919,247, entitled “Method For The Distribution Of Code And Data Updates” assigned to Marimba, Inc., USA, is aimed at large scale distribution of application code and data. The invention disclosed in the patent allows for automatic updating, personalization, and usage monitoring of applications. According to the disclosed invention, an end-user subscribes to a server to update software applications running on his/her machine. The server then delivers the requested applications to the user. At a later point of time, the user may again send a subscription request and the server will then send the updated applications. Once downloaded, the applications can be run on the host computer as many times as required without needing to contact the server.
WIPO Publication Number 02/099682, titled “Remote Management Agent For Application Provisioning And Content Synchronization In An Unattended Operation Environment”, assigned to Sequoia Broadband, Inc., CA, USA, is aimed at enabling a remote computer to recover from abnormal operating conditions in a computer without human intervention. The disclosed system provides a remote management agent which runs in a remote computer. Further, a network operations center is operatively in communication with a data network. The system enables monitoring a predetermined set of environmental values at a remote computer. These values are reported back to the network operations center in case a value exceeds a predetermined value. Further, with the help of the remote management agent, the system allows for software provisioning and content synchronization. Software provisioning pertains to providing updates to already running software or providing for new software according to a predetermined criterion. Content synchronization pertains to maintaining and updating a file storage structure on a database. The system also provides for automatic upgrading when a software version is not up-to-date.
However, all of the mentioned patents and publications suffer from one or more of the following shortcomings. Firstly, downloading newer software versions is solely based on the prerogative of the user. It may still happen that a user may choose not to run these software applications and thereby hinder the normal operation of software upgrading. This may lead to the earlier mentioned problems of inconsistency or incompatibility between different software applications running on the network. Secondly, there is no mechanism to prevent a user from running an incorrect version of a software application. Thirdly, there is no mechanism to identify whether the monitoring and updating agents are running in a correct manner on all the nodes in a network.
In light of the above discussion, it is evident that there exists need for a system and a method that effectively monitors and ensures correct operation of software applications in a network. A need also exists for a system that automatically updates and monitors the software application, without depending on the end-users.